package com.example.springboot.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.springboot.dto.RouteDTO;
import com.example.springboot.dto.RouteReviewDTO;
import com.example.springboot.entity.Route;
import com.example.springboot.entity.RouteReview;

import java.util.List;
import java.util.Map;

public interface RouteService extends IService<Route> {
    
    RouteDTO getRouteDetail(Long id);
    
    IPage<RouteDTO> getRouteList(Page<Route> page);
    
    IPage<RouteDTO> getHotRoutes(Page<Route> page);
    
    IPage<RouteDTO> getRoutesByDestination(Long destinationId, Page<Route> page);
    
    IPage<RouteDTO> getRoutesByTheme(String theme, Page<Route> page);
    
    IPage<RouteDTO> getRoutesByDifficulty(String difficulty, Page<Route> page);
    
    IPage<RouteDTO> searchRoutes(String keyword, Page<Route> page);
    
    List<RouteDTO> getRelatedRoutes(Long destinationId, Integer limit);
    
    List<String> getAllThemes();
    
    IPage<RouteReviewDTO> getRouteReviews(Long routeId, Page<RouteReview> page);
    
    Map<String, Object> getRouteStats();
    
    void incrementBookCount(Long id);
    
    void addReview(RouteReview review);
}